-
Notifications
You must be signed in to change notification settings - Fork 56
Update to function-sdk-go 0.5.0 #498
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
8c2e1a4 to
89d5e73
Compare
jbw976
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks reasonable to me @bobh66, thanks for the follow up here!
fn.go
Outdated
|
|
||
| // Initialize the requirements. | ||
| requirements := &fnv1.Requirements{ExtraResources: make(map[string]*fnv1.ResourceSelector)} | ||
| requirements := &fnv1.Requirements{Resources: make(map[string]*fnv1.ResourceSelector)} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Switching from ExtraResources to Resources will break things
See crossplane/function-sdk-go#219
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yep, that's why I put it back in Draft. We need to maintain the existing API to the user, which means adding the "extraResources" key into the template context with the same content as "requiredResources". Not ideal, but here we are.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good catch @tenitski, thanks for the reminder here! 😥
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@negz - how does this work with a version of Crossplane that is still using the v1 version of the protobuf? Are we going to break ExtraResources functionality for older releases of Crossplane by changing this?
I'm concerned that this change may mean that the function now only works with v2 core Crossplane. Maybe we need to handle both message attributes for some interval until v1 Crossplane is completely unsupported.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm leaning towards a solution where namespaced extra resources use the new "resources" field and non-namespaced extra resources use the deprecated "extra_resources" field. That allows existing v1 core Crossplane deployments to continue working and v2 deployments can use the namespaced extra resources. Then if/when v1 Crossplane is declared dead we can update the function to use "resources" for all cases.
The existing "ExtraResources" API in the template will remain as it is not worth breaking backwards compatibility.
Thoughts/concerns?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm over-thinking this - we can continue to use rsp.requirements["extra_resources"] since it is supported in both v1 and v2 of Crossplane core, and we can accept both req.extra_resources and req.required_resources. I'll push an updated patchset.
Signed-off-by: Bob Haddleton <[email protected]>
Signed-off-by: Bob Haddleton <[email protected]>
Signed-off-by: Bob Haddleton <[email protected]>
Signed-off-by: Bob Haddleton <[email protected]>
Signed-off-by: Bob Haddleton <[email protected]>
| func getExtraResources(req map[string]any, name string) []any { | ||
| var ers []any | ||
| path := fmt.Sprintf("extraResources[%s].items", name) | ||
| path := fmt.Sprintf("requiredResources[%s].items", name) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should this one check for both extraResources and requiredResources?
Description of your changes
Update to function-sdk-go 0.5.0 which includes crossplane-runtime v2
I have: